草庐IT

vc x86.mis

全部标签

c - syscall 是 x86_64 上的指令吗?

我想检查在glibc中执行系统调用的代码。我发现了这样的东西:ENTRY(syscall)movq%rdi,%rax/*Syscallnumber->rax.*/movq%rsi,%rdi/*shiftarg1-arg5.*/movq%rdx,%rsimovq%rcx,%rdxmovq%r8,%r10movq%r9,%r8movq8(%rsp),%r9/*arg6isonthestack.*/syscall/*Dothesystemcall.*/cmpq$-4095,%rax/*Check%raxforerror.*/jaeSYSCALL_ERROR_LABEL/*Jumptoerro

c - syscall 是 x86_64 上的指令吗?

我想检查在glibc中执行系统调用的代码。我发现了这样的东西:ENTRY(syscall)movq%rdi,%rax/*Syscallnumber->rax.*/movq%rsi,%rdi/*shiftarg1-arg5.*/movq%rdx,%rsimovq%rcx,%rdxmovq%r8,%r10movq%r9,%r8movq8(%rsp),%r9/*arg6isonthestack.*/syscall/*Dothesystemcall.*/cmpq$-4095,%rax/*Check%raxforerror.*/jaeSYSCALL_ERROR_LABEL/*Jumptoerro

c - 获取 x86 当前指令的地址

这个问题在这里已经有了答案:Readingprogramcounterdirectly(7个答案)关闭4年前。我正在使用x86(准确地说是64位)的Linux。有没有办法可以获取当前指令的地址。其实我想写我自己的setjmp/longjmp的简化版本。Here,R..发布了longjmp的简化版本。知道setjmp是如何实现的。一个简化版本,即不考虑异常和信号等...

c - 获取 x86 当前指令的地址

这个问题在这里已经有了答案:Readingprogramcounterdirectly(7个答案)关闭4年前。我正在使用x86(准确地说是64位)的Linux。有没有办法可以获取当前指令的地址。其实我想写我自己的setjmp/longjmp的简化版本。Here,R..发布了longjmp的简化版本。知道setjmp是如何实现的。一个简化版本,即不考虑异常和信号等...

linux -/proc/$pid/maps 显示在 x86_64 linux 上没有 rwx 权限的页面

/proc/$pid/maps显示在x86_64Linux上没有rwx权限的页面。我注意到,当我在64位Linux上读取/proc/$pid/maps时,我有没有权限的内存页,但在32位Linux中,它们不存在。我正在尝试监控我的进程的内存使用情况,但我很困惑。为什么有些页面没有rwx权限。他们正在消耗我的内存!这是“top”的64位Linux输出的片段%cat/proc/21367/maps3154200000-315420d000r-xp00000000fd:004835776/lib64/libproc-3.2.7.so315420d000-315440d000**---p**0

linux -/proc/$pid/maps 显示在 x86_64 linux 上没有 rwx 权限的页面

/proc/$pid/maps显示在x86_64Linux上没有rwx权限的页面。我注意到,当我在64位Linux上读取/proc/$pid/maps时,我有没有权限的内存页,但在32位Linux中,它们不存在。我正在尝试监控我的进程的内存使用情况,但我很困惑。为什么有些页面没有rwx权限。他们正在消耗我的内存!这是“top”的64位Linux输出的片段%cat/proc/21367/maps3154200000-315420d000r-xp00000000fd:004835776/lib64/libproc-3.2.7.so315420d000-315440d000**---p**0

linux - x86 ASM Linux - 使用 .bss 部分

我希望这些问题相当简单:(NASM编译器、Linux、x86Intel语法)第1部分:我正在尝试弄清楚如何使用汇编程序的.bss部分找到一种方法来存储值,例如来自操作(+-*/)的值到已声明的变量。例如:section.bssvariable:resb50;Imaginarybuffersection.textadd10,1;Operation;movetheresultintovariable所以,我知道可以使用内核中断来读取用户输入(但这涉及字符串,但是有没有办法将这个值复制到variable变量中,以便它以后可以使用吗?这比必须将两个东西压入和压出堆栈要容易得多。第2部分:有没有

linux - x86 ASM Linux - 使用 .bss 部分

我希望这些问题相当简单:(NASM编译器、Linux、x86Intel语法)第1部分:我正在尝试弄清楚如何使用汇编程序的.bss部分找到一种方法来存储值,例如来自操作(+-*/)的值到已声明的变量。例如:section.bssvariable:resb50;Imaginarybuffersection.textadd10,1;Operation;movetheresultintovariable所以,我知道可以使用内核中断来读取用户输入(但这涉及字符串,但是有没有办法将这个值复制到variable变量中,以便它以后可以使用吗?这比必须将两个东西压入和压出堆栈要容易得多。第2部分:有没有

linux - 禁止在 x86/x86_64 上进行未对齐的内存访问

我想在x86/x86_64上模拟禁止未对齐内存访问的系统。是否有一些调试工具或特殊模式可以执行此操作?在使用为SPARC或其他类似CPU设计的软件(C/C++)时,我想在几台x86/x86_64PC上运行许多(CPU密集型)测试。但是我对Sparc的访问是有限的。据我所知,Sparc总是检查内存读取和写入的对齐是否自然(从任何地址读取一个字节,但仅本地址可被4整除时才允许读取4字节的字)。可能是Valgrind或PIN有这样的模式?还是编译器的特殊模式?我正在搜索Linux非商业工具,但也允许使用Windows工具。或者EFLAGS中可能有secretCPU标志?

linux - 禁止在 x86/x86_64 上进行未对齐的内存访问

我想在x86/x86_64上模拟禁止未对齐内存访问的系统。是否有一些调试工具或特殊模式可以执行此操作?在使用为SPARC或其他类似CPU设计的软件(C/C++)时,我想在几台x86/x86_64PC上运行许多(CPU密集型)测试。但是我对Sparc的访问是有限的。据我所知,Sparc总是检查内存读取和写入的对齐是否自然(从任何地址读取一个字节,但仅本地址可被4整除时才允许读取4字节的字)。可能是Valgrind或PIN有这样的模式?还是编译器的特殊模式?我正在搜索Linux非商业工具,但也允许使用Windows工具。或者EFLAGS中可能有secretCPU标志?